import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
console.log(process.env.NODE_ENV);
const store = new Vuex.Store({
    //1.state用来 提供 共享数据的
    state: {
        money: 1000,
        car: '雅迪'
    },

    //严格模式，监听仓库数据是否是通过mutations修改，否则报错
    strict: process.env.NODE_ENV === 'development',
    //2.mutations，提供修改数据的方法，state中的数据只能在mutations中修改
    mutations: {
        addFn(state) {
            // console.log(state);//是一个对象，代表的是state中的所有数据，可以从里面拿到任何数据
            state.money++
        },
        sellFn(state, m) {
            // console.log(state, m);//m是子组件时间函数中传的值
            state.money += m
        },
        // 提交的参数只能是一个, 如果有多个参数要传, 可以传递一个对象，通常写成payload.或者使用解构的方式
        extraFn(state, { more, car }) {
            // state.money += payload.more
            // state.car = payload.car
            state.money += more
            state.car = car
        },
        //mutations不能 执行异步代码
        lookFn(state, m) {
            state.money -= m
        }
    },
    //3.actions，只用来执行 异步代码，不能修改数据
    actions: {
        //context这个参数等同于store，能够拿到store里的属性/方法
        lookAsync(context, m) {
            setTimeout(() => {
                //不能直接修改state的数据
                // state.money -= m
                console.log(context);
                context.commit('lookFn', m)
            }, 1000)
        }
    }
})

export default store
